package cn.iocoder.yudao.module.reading.dal.dataobject.plan;

import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.*;

import java.time.LocalDate;
import java.util.List;

/**
 * 阅读计划 DO
 *
 * @author 芋道源码
 */
@TableName(value = "reading_plans", autoResultMap = true)
@KeySequence("reading_plans_seq")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ReadingPlanDO extends BaseDO {

    /**
     * 计划ID
     */
    @TableId
    private Long id;
    /**
     * 用户ID
     */
    private Long userId;
    /**
     * 计划名称
     */
    private String planName;
    /**
     * 计划类型：collection-集合型，custom-自定义型
     */
    private String planType;
    /**
     * 计划封面URL
     */
    private String cover;
    /**
     * 每天学习数量
     */
    private Integer dailyCount;
    /**
     * 复习策略数组，如["2","5","8"]
     */
    @com.baomidou.mybatisplus.annotation.TableField(typeHandler = JacksonTypeHandler.class)
    private List<String> reviewSchedule;
    /**
     * 计划总绘本数
     */
    private Integer totalBooks;
    /**
     * 预计完成天数
     */
    private Integer estimatedDays;
    /**
     * 当前进行天数
     */
    private Integer currentDay;
    /**
     * 已完成绘本数
     */
    private Integer completedBooks;
    /**
     * 计划状态：active-进行中，paused-暂停，completed-已完成，cancelled-已取消
     */
    private String status;
    /**
     * 开始日期
     */
    private LocalDate startDate;
    /**
     * 结束日期
     */
    private LocalDate endDate;

}
